1100
Is it is possible to exclude the non-working days when displaying the histogram using the exBarEffort for exHistOverAllocation type

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar,oBar1,oBar2
	LOCAL oChart
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Tasks")
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,40)
			oChart:FirstVisibleDate := "06/20/2005"
			oChart:HistogramVisible := .T.
			oChart:HistogramHeight := 64
			oChart:HistogramView := 112/*exHistogramAllItems*/
			oBar := oChart:Bars:Item("Split")
				oBar:Pattern := 6/*exPatternBDiagonal*/
				oBar:Shape := 18/*exShapeThinUp*/
				oBar:SetProperty("Color",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,128 } )  , .F. ))
			oBar1 := oChart:Bars():Add("Task:Split")
				oBar1:SetProperty("Color",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,128 } )  , .F. ))
				oBar1:Shortcut := "WorkingTask"
				oBar1:Pattern := 6/*exPatternBDiagonal*/
				oBar1:HistogramPattern := 6/*exPatternBDiagonal*/
				oBar1:HistogramType := 1/*exHistOverAllocation*/
			oBar2 := oChart:Bars():Item("Task")
				oBar2:SetProperty("Color",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,255 } )  , .F. ))
				oBar2:Pattern := 5/*exPatternFDiagonal*/
				oBar2:HistogramType := 1/*exHistOverAllocation*/
				oBar2:HistogramPattern := 5/*exPatternFDiagonal*/
		oItems := oG2antt:Items()
			h := oItems:AddItem("True")
			oItems:AddBar(h,"WorkingTask","06/23/2005","06/29/2005")
			oItems:SetProperty("ItemBar",h,"",21/*exBarEffort*/,4)
			oItems:SetProperty("ItemBar",h,"",20/*exBarKeepWorkingCount*/,.T.)
			h := oItems:AddItem("False")
			oItems:AddBar(h,"Task","06/23/2005","06/29/2005")
			oItems:SetProperty("ItemBar",h,"",21/*exBarEffort*/,4)
			oItems:SetProperty("ItemBar",h,"",20/*exBarKeepWorkingCount*/,.F.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1099
I display numbers in my chart, but the AddBar requires a date how can I add a bar
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL oLevel

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Tasks")
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:NonworkingDays := 0
			oChart:FirstVisibleDate := 0
			oChart:ToolTip := ""
			oLevel := oChart:Level(0)
				oLevel:Label := "<%i%>"
				oLevel:ToolTip := ""
			oChart:UnitWidth := 24
		oItems := oG2antt:Items()
			oItems:AddBar(oItems:AddItem("Task 1"),"Task",2,4)
			oItems:AddBar(oItems:AddItem("Task 2"),"Task",6,10)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1098
I display numbers in the chart's header but do not want to get displayed negative numbers. How can i do that
PROCEDURE OnDateChange(oG2antt)
	oG2antt:Chart():FirstVisibleDate := 0
	oG2antt:SetProperty("ScrollPartEnable",2/*exHChartScroll*/,1024/*exLeftBPart*/,.F.)
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:DateChange := {|| OnDateChange(oG2antt)} /*Occurs when the first visible date is changed.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:NonworkingDays := 0
			oChart:FirstVisibleDate := 0
			oChart:ToolTip := ""
			oLevel := oChart:Level(0)
				oLevel:Label := "<%i%>"
				oLevel:ToolTip := "<%i%>"
			oChart:UnitWidth := 24
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1097
How can I display numbers in the chart's header instead dates

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:NonworkingDays := 0
			oChart:FirstVisibleDate := 0
			oChart:ToolTip := ""
			oLevel := oChart:Level(0)
				oLevel:Label := "<%i%>"
				oLevel:ToolTip := ""
			oChart:UnitWidth := 24
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1096
How can I create a bar that's not sizable, or can not be resized by default similar with milestone
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar
	LOCAL oChart
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:FirstVisibleDate := "12/24/2000"
			oChart:LevelCount := 2
			oBar := oChart:Bars():Add("Custom")
				oBar:Shape := 0/*exShapeEmpty*/
				oBar:StartShape := 1/*exShapeIconUp1*/
				oBar:EndShape := 0/*exShapeIconEmpty*/
		oItems := oG2antt:Items()
			oItems:AddBar(oItems:AddItem(""),"Custom","01/02/2001","01/02/2001","K1","This TYPE of bar can not be resized.")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1095
Is it possible to hide the non-working parts for items using the ItemNonworkingUnits, even if set the ShowNonworkingUnits, ShowNonworkingDates on False

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:Bars():Add("Task:Split"):Shortcut := "Task"
			oChart:FirstVisibleDate := "12/27/2000"
			oChart:SetProperty("PaneWidth",.F.,64)
			oChart:LevelCount := 2
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingDates := .F.
			oChart:NonworkingDaysPattern := 0/*exPatternEmpty*/
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1")
			h2 := oItems:AddItem("Task 2")
			oItems:SetProperty("ItemNonworkingUnits",h2,.F.,"weekday(value) = 1")
			oItems:AddBar(h2,"Task","01/04/2001","01/06/2001","K2")
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/08/2001","01/10/2001","K3")
			oItems:AddLink("L2",h2,"K2",h3,"K3")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1094
Is it possible to show the non-working parts for certain items, even if I hide the default non-working part

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:Bars():Add("Task:Split"):Shortcut := "Task"
			oChart:FirstVisibleDate := "12/27/2000"
			oChart:SetProperty("PaneWidth",.F.,64)
			oChart:LevelCount := 2
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingDates := .F.
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1")
			h2 := oItems:AddItem("Task 2")
			oItems:SetProperty("ItemNonworkingUnits",h2,.F.,"weekday(value) = 1")
			oItems:AddBar(h2,"Task","01/04/2001","01/06/2001","K2")
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/08/2001","01/10/2001","K3")
			oItems:AddLink("L2",h2,"K2",h3,"K3")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1093
How can I hide the non-working part of the chart
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2008"
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:LevelCount := 2
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingDates := .F.
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1092
Is it possible to let users selects cells as in Excel
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn,oColumn1,oColumn2
	LOCAL oColumns
	LOCAL oItems
	LOCAL h,h1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:FullRowSelect := 1/*exRectSel*/
		oG2antt:SingleSel := .F.
		oG2antt:ReadOnly := -1/*exReadOnly*/
		oG2antt:MarkSearchColumn := .F.
		oG2antt:ShowFocusRect := .F.
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oG2antt:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oG2antt:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 200,225,242 } )  , .F. ))
		oColumns := oG2antt:Columns()
			oColumns:Add("A")
			oColumn := oColumns:Add("B")
				oColumn:AllowSizing := .F.
				oColumn:Width := 24
			oColumn1 := oColumns:Add("C")
				oColumn1:AllowSizing := .F.
				oColumn1:Width := 24
				oColumn1:SetProperty("Def",0/*exCellHasCheckBox*/,1)
				oColumn1:PartialCheck := .T.
			oColumn2 := oColumns:Add("D")
				oColumn2:AllowSizing := .F.
				oColumn2:Width := 24
				oColumn2:SetProperty("Def",1/*exCellHasRadioButton*/,1)
		oItems := oG2antt:Items()
			h := oItems:InsertItem(,,"Group 1")
			h1 := oItems:InsertItem(h,,16)
			oItems:SetProperty("CellValue",h1,1,17)
			h1 := oItems:InsertItem(h,,2)
			oItems:SetProperty("CellValue",h1,1,11)
			h1 := oItems:InsertItem(h,,2)
			oItems:SetProperty("ItemBackColor",h1,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
			oItems:SetProperty("CellValue",h1,1,9)
			oItems:SetProperty("ExpandItem",h,.T.)
			h := oItems:InsertItem(,,"Group 2")
			oItems:SetProperty("CellValueFormat",h,2,1/*exHTML*/)
			h1 := oItems:InsertItem(h,,16)
			oItems:SetProperty("CellValue",h1,1,9)
			h1 := oItems:InsertItem(h,,12)
			oItems:SetProperty("CellValue",h1,1,11)
			h1 := oItems:InsertItem(h,,2)
			oItems:SetProperty("CellValue",h1,1,2)
			oItems:SetProperty("ExpandItem",h,.T.)
			oItems:SetProperty("SelectItem",h,.T.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1091
How can I hide a date from the chart view
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oInsideZooms

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2008"
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:LevelCount := 2
			oChart:AllowInsideZoom := .T.
			oChart:AllowResizeInsideZoom := .F.
			oChart:InsideZoomOnDblClick := .F.
			oInsideZooms := oChart:InsideZooms()
				oInsideZooms:SplitBaseLevel := .F.
				oInsideZooms:DefaultWidth := 0
				oInsideZooms:Add("01/04/2008")
				oInsideZooms:Add("01/05/2008")
				oInsideZooms:Add("01/06/2008")
			oChart:SelectLevel := 1
			oChart:SetProperty("SelectDate","01/05/2008",.T.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1090
Can the SchedulePDM displays and edit the working units for my bars

PROCEDURE OnBarResizing(oG2antt,Item,Key)
	oG2antt:Items():SchedulePDM(Item,Key)
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn
	LOCAL oItems
	LOCAL h1,h2,h3,h4

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BarResizing := {|Item,Key| OnBarResizing(oG2antt,Item,Key)} /*Occurs when a bar is moving or resizing.*/

		oG2antt:BeginUpdate()
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oG2antt:Columns():Add("Task")
		oColumn := oG2antt:Columns():Add("Working")
			oColumn:SetProperty("Def",18/*exCellValueToItemBarProperty*/,258)
			oColumn:Editor():EditType := 4/*SpinType*/
		oChart := oG2antt:Chart()
			oChart:Bars():Add("Task:Split"):Shortcut := "Task"
			oChart:FirstVisibleDate := "12/28/2000"
			oChart:SetProperty("PaneWidth",.F.,96)
			oChart:AllowLinkBars := .F.
			oChart:AllowCreateBar := 0/*exNoCreateBar*/
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","")
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/04/2001","")
			oItems:AddLink("L1",h1,"",h2,"")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/06/2001","")
			oItems:AddLink("L2",h2,"",h3,"")
			oItems:SetProperty("Link","L2",12/*exLinkText*/,"FF")
			oItems:SetProperty("Link","L2",6/*exLinkStartPos*/,2)
			oItems:SetProperty("Link","L2",7/*exLinkEndPos*/,2)
			h4 := oItems:AddItem("Task 4")
			oItems:AddBar(h4,"Task","01/02/2001","01/04/2001","")
			oItems:AddLink("L3",h4,"",h3,"")
			oItems:SetProperty("ItemBar",0,"<*>",20/*exBarKeepWorkingCount*/,.T.)
			oItems:SchedulePDM(oItems:FirstVisibleItem(),"")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1089
Can the SchedulePDM displays the working units for my bars
PROCEDURE OnBarResizing(oG2antt,Item,Key)
	oG2antt:Items():SchedulePDM(Item,Key)
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3,h4

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BarResizing := {|Item,Key| OnBarResizing(oG2antt,Item,Key)} /*Occurs when a bar is moving or resizing.*/

		oG2antt:BeginUpdate()
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oG2antt:Columns():Add("Task")
		oG2antt:Columns():Add("Working"):SetProperty("Def",18/*exCellValueToItemBarProperty*/,258)
		oChart := oG2antt:Chart()
			oChart:Bars():Add("Task:Split"):Shortcut := "Task"
			oChart:FirstVisibleDate := "12/28/2000"
			oChart:SetProperty("PaneWidth",.F.,96)
			oChart:AllowLinkBars := .F.
			oChart:AllowCreateBar := 0/*exNoCreateBar*/
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","")
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/04/2001","")
			oItems:AddLink("L1",h1,"",h2,"")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/06/2001","")
			oItems:AddLink("L2",h2,"",h3,"")
			oItems:SetProperty("Link","L2",12/*exLinkText*/,"FF")
			oItems:SetProperty("Link","L2",6/*exLinkStartPos*/,2)
			oItems:SetProperty("Link","L2",7/*exLinkEndPos*/,2)
			h4 := oItems:AddItem("Task 4")
			oItems:AddBar(h4,"Task","01/02/2001","01/04/2001","")
			oItems:AddLink("L3",h4,"",h3,"")
			oItems:SetProperty("ItemBar",0,"<*>",20/*exBarKeepWorkingCount*/,.T.)
			oItems:SchedulePDM(oItems:FirstVisibleItem(),"")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1088
Can the SchedulePDM keeps the working units for my bars
PROCEDURE OnBarResizing(oG2antt,Item,Key)
	oG2antt:Items():SchedulePDM(Item,Key)
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3,h4

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BarResizing := {|Item,Key| OnBarResizing(oG2antt,Item,Key)} /*Occurs when a bar is moving or resizing.*/

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:Bars():Add("Task:Split"):Shortcut := "Task"
			oChart:FirstVisibleDate := "12/28/2000"
			oChart:SetProperty("PaneWidth",.F.,48)
			oChart:AllowLinkBars := .F.
			oChart:AllowCreateBar := 0/*exNoCreateBar*/
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1")
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/04/2001","K2")
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/06/2001","K3")
			oItems:AddLink("L2",h2,"K2",h3,"K3")
			oItems:SetProperty("Link","L2",12/*exLinkText*/,"FF")
			oItems:SetProperty("Link","L2",6/*exLinkStartPos*/,2)
			oItems:SetProperty("Link","L2",7/*exLinkEndPos*/,2)
			h4 := oItems:AddItem("Task 4")
			oItems:AddBar(h4,"Task","01/02/2001","01/04/2001","K4")
			oItems:AddLink("L3",h4,"K4",h3,"K3")
			oItems:SetProperty("ItemBar",0,"<*>",20/*exBarKeepWorkingCount*/,.T.)
			oItems:SchedulePDM(0,"K1")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1087
How can I arrange automatically the bars based on their links as soon as user moves the bars
PROCEDURE OnBarResizing(oG2antt,Item,Key)
	oG2antt:Items():SchedulePDM(Item,Key)
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3,h4

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BarResizing := {|Item,Key| OnBarResizing(oG2antt,Item,Key)} /*Occurs when a bar is moving or resizing.*/

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "12/28/2000"
			oChart:SetProperty("PaneWidth",.F.,48)
			oChart:AllowLinkBars := .F.
			oChart:AllowCreateBar := 0/*exNoCreateBar*/
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1")
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/04/2001","K2")
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/06/2001","K3")
			oItems:AddLink("L2",h2,"K2",h3,"K3")
			oItems:SetProperty("Link","L2",12/*exLinkText*/,"FF")
			oItems:SetProperty("Link","L2",6/*exLinkStartPos*/,2)
			oItems:SetProperty("Link","L2",7/*exLinkEndPos*/,2)
			h4 := oItems:AddItem("Task 4")
			oItems:AddBar(h4,"Task","01/02/2001","01/04/2001","K4")
			oItems:AddLink("L3",h4,"K4",h3,"K3")
			oItems:SchedulePDM(0,"K1")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1086
How can I arrange automatically the bars based on their links as soon as user moves the bars
PROCEDURE OnBarResize(oG2antt,Item,Key)
	oG2antt:Items():SchedulePDM(Item,Key)
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BarResize := {|Item,Key| OnBarResize(oG2antt,Item,Key)} /*Occurs when a bar is moved or resized.*/

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,48)
			oChart:AllowLinkBars := .F.
			oChart:AllowCreateBar := 0/*exNoCreateBar*/
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1")
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/04/2001","K2")
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/04/2001","K3")
			oItems:AddLink("L2",h2,"K2",h3,"K3")
			oItems:SchedulePDM(0,"K1")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1085
I have some buttons added on the control's scroll bar, how can I can know when the button is being clicked
PROCEDURE OnScrollButtonClick(oG2antt,ScrollBar,ScrollPart)
	DevOut( Transform(ScrollBar,"") )
	DevOut( Transform(ScrollPart,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:ScrollButtonClick := {|ScrollBar,ScrollPart| OnScrollButtonClick(oG2antt,ScrollBar,ScrollPart)} /*Occurs when the user clicks a button in the scrollbar.*/

		oG2antt:SetProperty("ScrollPartVisible",1/*exHScroll*/,32768/*exLeftB1Part*/,.T.)
		oG2antt:SetProperty("ScrollPartVisible",1/*exHScroll*/,16384/*exLeftB2Part*/,.T.)
		oG2antt:SetProperty("ScrollPartVisible",1/*exHScroll*/,1/*exRightB6Part*/,.T.)
		oG2antt:SetProperty("ScrollPartVisible",1/*exHScroll*/,2/*exRightB5Part*/,.T.)
		oG2antt:ScrollBars := 5/*exDisableNoHorizontal*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1084
How do I get notified once the user clicks a hyperlink created using the anchor HTML tag
PROCEDURE OnAnchorClick(oG2antt,AnchorID,Options)
	DevOut( Transform(AnchorID,"") )
	DevOut( Transform(Options,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AnchorClick := {|AnchorID,Options| OnAnchorClick(oG2antt,AnchorID,Options)} /*Occurs when an anchor element is clicked.*/

		oG2antt:Columns():Add("Default"):SetProperty("Def",17/*exCellValueFormat*/,1)
		oItems := oG2antt:Items()
			oItems:AddItem("This is a link: <aex.com;1>www.exontrol.com</a>")
			oItems:AddItem("This is a link: <aex.net;2>www.exontrol.net</a>")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1083
Is it possible to start editing a cell when double click it
PROCEDURE OnDblClick(oG2antt,Shift,X,Y)
	oG2antt:Edit()
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems,oItems1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:DblClick := {|Shift,X,Y| OnDblClick(oG2antt,Shift,X,Y)} /*Occurs when the user dblclk the left mouse button over an object.*/

		oG2antt:BeginUpdate()
		oG2antt:AutoEdit := .F.
		oG2antt:MarkSearchColumn := .F.
		oG2antt:Columns():Add("Edit1"):Editor():EditType := 1/*EditType*/
		oG2antt:Columns():Add("Edit2"):Editor():EditType := 1/*EditType*/
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem(1),1,2)
		oItems1 := oG2antt:Items()
			oItems1:SetProperty("CellValue",oItems1:AddItem(3),1,4)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1082
Is it possible to disable standard single-click behavior for this column, so I manually could call Edit() when needed
PROCEDURE OnDblClick(oG2antt,Shift,X,Y)
	oG2antt:Edit()
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems,oItems1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:DblClick := {|Shift,X,Y| OnDblClick(oG2antt,Shift,X,Y)} /*Occurs when the user dblclk the left mouse button over an object.*/

		oG2antt:BeginUpdate()
		oG2antt:AutoEdit := .F.
		oG2antt:MarkSearchColumn := .F.
		oG2antt:Columns():Add("Edit1"):Editor():EditType := 1/*EditType*/
		oG2antt:Columns():Add("Edit2"):Editor():EditType := 1/*EditType*/
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem(1),1,2)
		oItems1 := oG2antt:Items()
			oItems1:SetProperty("CellValue",oItems1:AddItem(3),1,4)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1081
How can I get or restore the old or previously value for the cell being changed
PROCEDURE OnChange(oG2antt,Item,ColIndex,NewValue)
	DevOut( "Old-Value:" )
	DevOut( Transform(oG2antt:Items:CellValue(Item,ColIndex),"") )
	DevOut( "New-Value:" )
	DevOut( Transform(NewValue,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems,oItems1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:Change := {|Item,ColIndex,NewValue| OnChange(oG2antt,Item,ColIndex,NewValue)} /*Occurs when the user changes the cell's content.*/

		oG2antt:BeginUpdate()
		oG2antt:MarkSearchColumn := .F.
		oG2antt:Columns():Add("Edit1"):Editor():EditType := 1/*EditType*/
		oG2antt:Columns():Add("Edit2"):Editor():EditType := 1/*EditType*/
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem(1),1,2)
		oItems1 := oG2antt:Items()
			oItems1:SetProperty("CellValue",oItems1:AddItem(3),1,4)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1080
How can I display the number of items being found after filtering
PROCEDURE OnFilterChange(oG2antt)
	oG2antt:FilterBarCaption := Transform(oG2antt:Items:VisibleCount(),"")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:FilterChange := {|| OnFilterChange(oG2antt)} /*Occurs when the filter was changed.*/

		oG2antt:BeginUpdate()
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 1/*exFilterPromptContainsAll*/
		oG2antt:FilterBarPromptPattern := "london"
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1079
How can I highligth the item from the cursor as it moves
PROCEDURE OnMouseMove(oG2antt,Button,Shift,X,Y)
	LOCAL oItems
	LOCAL h
	oG2antt:BeginUpdate()
	h := oG2antt:ItemFromPoint(-1,-1,c,hit)
	oItems := oG2antt:Items()
		oItems:ClearItemBackColor(oG2antt:Background(1000/*0x200+exHSRight+exListOLEDropPosition*/))
		oItems:SetProperty("ItemBackColor",h,AutomationTranslateColor( GraMakeRGBColor  ( { 240,250,240 } )  , .F. ))
	oG2antt:SetProperty("Background",1000/*0x200+exHSRight+exListOLEDropPosition*/,h)
	oG2antt:EndUpdate()
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oG2antt,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/

		oG2antt:BeginUpdate()
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oG2antt:DrawGridLines := 1/*exHLines*/
		oG2antt:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,250,240 } )  , .F. ))
		oG2antt:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oG2antt:ShowFocusRect := .F.
		oChart := oG2antt:Chart()
			oChart:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,250,240 } )  , .F. ))
		oG2antt:Columns():Add("Items")
		oItems := oG2antt:Items()
			h := oItems:AddItem("R1")
			oItems:InsertItem(h,,"Cell 1.1")
			oItems:InsertItem(h,,"Cell 1.2")
			oItems:SetProperty("ExpandItem",h,.T.)
			h := oItems:AddItem("R2")
			oItems:InsertItem(h,,"Cell 2.1")
			oItems:InsertItem(h,,"Cell 2.2")
			oItems:SetProperty("ExpandItem",h,.T.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1078
How can I get the item from the cursor
PROCEDURE OnMouseMove(oG2antt,Button,Shift,X,Y)
	LOCAL h
	h := oG2antt:ItemFromPoint(-1,-1,c,hit)
	DevOut( "Handle" )
	DevOut( Transform(h,"") )
	DevOut( "Index" )
	DevOut( Transform(oG2antt:Items:ItemToIndex(h),"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oG2antt,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/

		oG2antt:BeginUpdate()
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oG2antt:DrawGridLines := 1/*exHLines*/
		oG2antt:Columns():Add("Items")
		oItems := oG2antt:Items()
			h := oItems:AddItem("R1")
			oItems:InsertItem(h,,"Cell 1.1")
			oItems:InsertItem(h,,"Cell 1.2")
			oItems:SetProperty("ExpandItem",h,.T.)
			h := oItems:AddItem("R2")
			oItems:InsertItem(h,,"Cell 2.1")
			oItems:InsertItem(h,,"Cell 2.2")
			oItems:SetProperty("ExpandItem",h,.T.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1077
How can I get the column from the cursor, not only in the header
PROCEDURE OnMouseMove(oG2antt,Button,Shift,X,Y)
	DevOut( Transform(oG2antt:ColumnFromPoint(-1,0),"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oG2antt,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/

		oG2antt:BeginUpdate()
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oG2antt:Columns():Add("P1")
		oG2antt:Columns():Add("P2")
		oG2antt:DrawGridLines := -1/*exAllLines*/
		oItems := oG2antt:Items()
			h := oItems:AddItem("R1")
			oItems:SetProperty("CellValue",h,1,"R2")
			oItems:SetProperty("CellValue",oItems:InsertItem(h,,"Cell 1.1"),1,"Cell 1.2")
			oItems:SetProperty("CellValue",oItems:InsertItem(h,,"Cell 2.1"),1,"Cell 2.2")
			oItems:SetProperty("ExpandItem",h,.T.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1076
How can I get the column from the cursor
PROCEDURE OnMouseMove(oG2antt,Button,Shift,X,Y)
	DevOut( Transform(oG2antt:ColumnFromPoint(-1,-1),"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oG2antt,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/

		oG2antt:BeginUpdate()
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oG2antt:DrawGridLines := -1/*exAllLines*/
		oG2antt:Columns():Add("P1")
		oG2antt:Columns():Add("P2")
		oItems := oG2antt:Items()
			h := oItems:AddItem("R1")
			oItems:SetProperty("CellValue",h,1,"R2")
			oItems:SetProperty("CellValue",oItems:InsertItem(h,,"Cell 1.1"),1,"Cell 1.2")
			oItems:SetProperty("CellValue",oItems:InsertItem(h,,"Cell 2.1"),1,"Cell 2.2")
			oItems:SetProperty("ExpandItem",h,.T.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1075
How can I get the cell's caption from the cursor
PROCEDURE OnMouseMove(oG2antt,Button,Shift,X,Y)
	LOCAL h
	h := oG2antt:ItemFromPoint(-1,-1,c,hit)
	DevOut( oG2antt:Items:CellCaption(h,c) )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oG2antt,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/

		oG2antt:BeginUpdate()
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oG2antt:Columns():Add("Items")
		oItems := oG2antt:Items()
			h := oItems:AddItem("R1")
			oItems:InsertItem(h,,"Cell 1.1")
			oItems:InsertItem(h,,"Cell 1.2")
			oItems:SetProperty("ExpandItem",h,.T.)
			h := oItems:AddItem("R2")
			oItems:InsertItem(h,,"Cell 2.1")
			oItems:InsertItem(h,,"Cell 2.2")
			oItems:SetProperty("ExpandItem",h,.T.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1074
Is it possible to change the style for the vertical or horizontal grid lines, in the list area
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:DrawGridLines := -1/*exAllLines*/
		oG2antt:GridLineStyle := 33/*exGridLinesVSolid+exGridLinesHDot4*/
		oG2antt:Columns():Add("C1")
		oG2antt:Columns():Add("C2")
		oG2antt:Columns():Add("C3")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item 1")
			oItems:SetProperty("CellValue",h,1,"SubItem 1.2")
			oItems:SetProperty("CellValue",h,2,"SubItem 1.3")
			h := oItems:AddItem("Item 2")
			oItems:SetProperty("CellValue",h,1,"SubItem 2.2")
			oItems:SetProperty("CellValue",h,2,"SubItem 2.3")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1073
How can I show the bars over the grid lines, i.e. so you cannot see the grid lines 'through' the bar

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar
	LOCAL oChart
	LOCAL oItems
	LOCAL oLevel
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:DrawGridLines := -1/*exAllLines*/
		oG2antt:SetProperty("GridLineColor",AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,48)
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:GridLineStyle := 256/*exGridLinesBehind*/
			oChart:LevelCount := 2
			oLevel := oChart:Level(1)
				oLevel:DrawGridLines := .T.
				oLevel:SetProperty("GridLineColor",AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
			oBar := oChart:Bars:Item("Task")
				oBar:Pattern := 1/*exPatternSolid*/
				oBar:Height := 14
		oG2antt:Columns():Add("Column")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item 1")
			oItems:AddBar(h,"Task","01/02/2001","01/05/2001","A")
			oItems:AddBar(h,"Task","01/08/2001","01/15/2001","B")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1072
Is it possible to change the style for the vertical grid lines, in the chart area only

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL oLevel
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:DrawGridLines := -1/*exAllLines*/
		oG2antt:GridLineStyle := 12/*exGridLinesDash*/
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,48)
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:GridLineStyle := 12/*exGridLinesDash*/
			oChart:LevelCount := 2
			oChart:Level(1):DrawGridLines := .T.
			oLevel := oChart:Level(0)
				oLevel:SetProperty("GridLineColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
				oLevel:GridLineStyle := 32/*exGridLinesVSolid*/
			oChart:Bars:Item("Task"):Pattern := 1/*exPatternSolid*/
		oG2antt:Columns():Add("Column")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item 1")
			oItems:AddBar(h,"Task","01/02/2001","01/05/2001","A")
			oItems:AddBar(h,"Task","01/08/2001","01/15/2001","B")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1071
Is it possible to change the style for the grid lines, for instance to be solid not dotted

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:DrawGridLines := -1/*exAllLines*/
		oG2antt:GridLineStyle := 48/*exGridLinesSolid*/
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,48)
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:GridLineStyle := 48/*exGridLinesSolid*/
			oChart:LevelCount := 2
			oChart:Level(1):DrawGridLines := .T.
			oChart:Bars:Item("Task"):Pattern := 1/*exPatternSolid*/
		oG2antt:Columns():Add("Column")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item 1")
			oItems:AddBar(h,"Task","01/02/2001","01/05/2001","A")
			oItems:AddBar(h,"Task","01/08/2001","01/15/2001","B")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1070
How can I show the grid lines for the chart and list area

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:DrawGridLines := -1/*exAllLines*/
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,48)
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:LevelCount := 2
			oChart:Level(1):DrawGridLines := .T.
			oChart:Bars:Item("Task"):Pattern := 1/*exPatternSolid*/
		oG2antt:Columns():Add("Column")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item 1")
			oItems:AddBar(h,"Task","01/02/2001","01/05/2001","A")
			oItems:AddBar(h,"Task","01/08/2001","01/15/2001","B")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1069
In the level of the chart we are showing the week number of the year (1-53) (Week: ww). However the weeknumber isn't correct. In western Europe the week of 04/01/2010 till 10/01/2010 is weeknumber 1, however the g2antt says it's week 2

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:FirstVisibleDate := "12/28/2009"
			oChart:LevelCount := 2
			oChart:Level(0):Label := "Week: <%ww%>/<%yyyy%>"
			oChart:FirstWeekDay := 1/*exMonday*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1068
How can I determine the current visible date range of the gantt chart area
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			oItems:AddBar(oItems:AddItem("Task 1"),"Task","01/02/2001","01/06/2001")
			oItems:AddBar(oItems:AddItem("Task 2"),"Task","01/03/2001","01/07/2001")
			oItems:AddBar(oItems:AddItem("Task 3"),"Task","01/04/2001","01/08/2001")
			oItems:AddBar(oItems:AddItem("Task 4"),"Task","01/06/2001","01/10/2001")
		DevOut( Transform(oG2antt:Chart:StartPrintDate(),"") )
		DevOut( Transform(oG2antt:Chart:EndPrintDate(),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1067
How can I change the progress bar using a spin editor using values from 0 to 100

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn
	LOCAL oColumns
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oColumns := oG2antt:Columns()
			oColumns:Add("Task")
			oColumn := oColumns:Add("Percent")
				oColumn:Editor():EditType := 4/*SpinType*/
				oColumn:SetProperty("Def",18/*exCellValueToItemBarProperty*/,518)
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:Bars():Add("Task%Progress")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Task 1")
			oItems:AddBar(h,"Task%Progress","01/02/2001","01/06/2001")
			oItems:SetProperty("CellValue",h,1,40)
			h := oItems:AddItem("Task 2")
			oItems:AddBar(h,"Task%Progress","01/02/2001","01/06/2001")
			oItems:SetProperty("CellValue",h,1,50)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1066
Is it possible to display the histogram for selected bars only

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,64)
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:HistogramVisible := .T.
			oChart:HistogramView := 8/*exHistogramSelectedBars*/
			oChart:HistogramHeight := 32
			oChart:Bars:Item("Task"):HistogramPattern := 6/*exPatternBDiagonal*/
		oG2antt:Columns():Add("Column")
		oItems := oG2antt:Items()
			oItems:AddBar(oItems:AddItem("Item 1"),"Task","01/03/2001","01/05/2001",1)
			oItems:AddBar(oItems:AddItem("Item 2"),"Task","01/04/2001","01/07/2001",2)
			oItems:AddBar(oItems:AddItem("Item 3"),"Task","01/02/2001","01/06/2001",3)
			oItems:SetProperty("ItemBar",0,2,257/*exBarSelected*/,.T.)
			oItems:SetProperty("ItemBar",0,3,257/*exBarSelected*/,.T.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1065
How can I fix a bar, so it is not selectable, moveable or resizable, fixed in other words
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/08/2001","K1","Unselectable")
			oItems:SetProperty("ItemBar",h1,"K1",29/*exBarSelectable*/,.F.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1064
How can I fix a bar, so it is not moveable or resizable
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1","Fixed")
			oItems:SetProperty("ItemBar",h1,"K1",10/*exBarCanResize*/,.F.)
			oItems:SetProperty("ItemBar",h1,"K1",11/*exBarCanMove*/,.F.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1063
Is is possible to fix a bar during PDM scheduling
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"TaskF","01/02/2001","01/04/2001","K1")
			oItems:SetProperty("ItemBar",h1,"K1",10/*exBarCanResize*/,.F.)
			oItems:SetProperty("ItemBar",h1,"K1",11/*exBarCanMove*/,.F.)
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/04/2001","K2")
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"TaskF","01/02/2001","01/04/2001","K3")
			oItems:SetProperty("ItemBar",h3,"K3",10/*exBarCanResize*/,.F.)
			oItems:SetProperty("ItemBar",h3,"K3",11/*exBarCanMove*/,.F.)
			oItems:AddLink("L2",h2,"K2",h3,"K3")
			oItems:SchedulePDM(0,"K1")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1062
How can I specify that during scheduling the link, bars should be delayed, on working part

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:Bars():Add("Task:Split"):Shortcut := "Task"
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/01/2001","01/03/2001","K1")
			oItems:SetProperty("ItemBar",h1,"K1",20/*exBarKeepWorkingCount*/,.T.)
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/05/2001","K2")
			oItems:SetProperty("ItemBar",h2,"K2",20/*exBarKeepWorkingCount*/,.T.)
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			oItems:SetProperty("Link","L1",12/*exLinkText*/,"FS")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/06/2001","K3")
			oItems:SetProperty("ItemBar",h3,"K3",20/*exBarKeepWorkingCount*/,.T.)
			oItems:AddLink("L2",h2,"K2",h3,"K3")
			oItems:SetProperty("Link","L2",12/*exLinkText*/,"link delays the bars<br>for <b>2</b> working days")
			oItems:SetProperty("Link","L2",16/*exLinkPDMWorkingDelay*/,2)
			oItems:SchedulePDM(0,"K1")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1061
How can I specify that during scheduling the link, bars should be delayed

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:ShowNonworkingDates := .F.
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1")
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/05/2001","K2")
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			oItems:SetProperty("Link","L1",12/*exLinkText*/,"FS")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/06/2001","K3")
			oItems:AddLink("L2",h2,"K2",h3,"K3")
			oItems:SetProperty("Link","L2",12/*exLinkText*/,"   Finish-Start<br>delayed <b>4</b> days")
			oItems:SetProperty("Link","L2",17/*exLinkPDMDelay*/,4)
			oItems:SchedulePDM(0,"K1")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1060
The SchedulePDM method put the bars on non-working part, how can I prevent that

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:Bars():Add("Task:Split"):Shortcut := "Task"
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1")
			oItems:SetProperty("ItemBar",h1,"K1",20/*exBarKeepWorkingCount*/,.T.)
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/05/2001","K2")
			oItems:SetProperty("ItemBar",h2,"K2",20/*exBarKeepWorkingCount*/,.T.)
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			oItems:SetProperty("Link","L1",12/*exLinkText*/,"FS")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/06/2001","K3")
			oItems:SetProperty("ItemBar",h3,"K3",20/*exBarKeepWorkingCount*/,.T.)
			oItems:AddLink("L2",h2,"K2",h3,"K3")
			oItems:SetProperty("Link","L2",12/*exLinkText*/,"FS")
			oItems:SchedulePDM(0,"K1")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1059
How can I add a SF (Start-Finish) link so activities get arranged using the SchedulePDM

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "12/28/2000"
			oChart:SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1")
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/05/2001","K2")
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			oItems:SetProperty("Link","L1",12/*exLinkText*/,"FS")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/06/2001","K3")
			oItems:AddLink("L2",h2,"K2",h3,"K3")
			oItems:SetProperty("Link","L2",12/*exLinkText*/,"SF")
			oItems:SetProperty("Link","L2",6/*exLinkStartPos*/,0)
			oItems:SetProperty("Link","L2",7/*exLinkEndPos*/,2)
			oItems:SchedulePDM(0,"K1")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1058
How can I add a SS (Start-Start) link so activities get arranged using the SchedulePDM

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "12/28/2000"
			oChart:SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1")
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/05/2001","K2")
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			oItems:SetProperty("Link","L1",12/*exLinkText*/,"FS")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/06/2001","K3")
			oItems:AddLink("L2",h2,"K2",h3,"K3")
			oItems:SetProperty("Link","L2",12/*exLinkText*/,"SS")
			oItems:SetProperty("Link","L2",6/*exLinkStartPos*/,0)
			oItems:SetProperty("Link","L2",7/*exLinkEndPos*/,0)
			oItems:SchedulePDM(0,"K1")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1057
How can I add a FF (Finish-Finish) link so activities get arranged using the SchedulePDM

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "12/28/2000"
			oChart:SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1")
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/05/2001","K2")
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			oItems:SetProperty("Link","L1",12/*exLinkText*/,"FS")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/06/2001","K3")
			oItems:AddLink("L2",h2,"K2",h3,"K3")
			oItems:SetProperty("Link","L2",12/*exLinkText*/,"FF")
			oItems:SetProperty("Link","L2",6/*exLinkStartPos*/,2)
			oItems:SetProperty("Link","L2",7/*exLinkEndPos*/,2)
			oItems:SchedulePDM(0,"K1")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1056
How can I add a FS (Finish-Start) link so activities get arranged using the SchedulePDM

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1")
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/05/2001","K2")
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			oItems:SetProperty("Link","L1",12/*exLinkText*/,"FS")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/06/2001","K3")
			oItems:AddLink("L2",h2,"K2",h3,"K3")
			oItems:SetProperty("Link","L2",12/*exLinkText*/,"FS")
			oItems:SchedulePDM(0,"K1")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1055
How can I schedule activities in the project plan
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1")
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/04/2001","K2")
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/04/2001","K3")
			oItems:AddLink("L2",h3,"K3",h2,"K2")
			oItems:SchedulePDM(0,"K1")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1054
How do I arrange the bars based on the links

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h1,h2,h3

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h1 := oItems:AddItem("Task 1")
			oItems:AddBar(h1,"Task","01/02/2001","01/04/2001","K1")
			h2 := oItems:AddItem("Task 2")
			oItems:AddBar(h2,"Task","01/02/2001","01/04/2001","K2")
			oItems:AddLink("L1",h1,"K1",h2,"K2")
			h3 := oItems:AddItem("Task 3")
			oItems:AddBar(h3,"Task","01/02/2001","01/04/2001","K3")
			oItems:AddLink("L2",h2,"K2",h3,"K3")
			oItems:SchedulePDM(0,"K1")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1053
Is is possible to use HTML tags to display in the filter caption
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarCaption := "This is a bit of text being displayed in the filter bar."
		oG2antt:Columns():Add("")
		oItems := oG2antt:Items()
			oItems:AddItem("Item 1")
			oItems:AddItem("Item 2")
			oItems:AddItem("Item 3")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1052
How can I find the number of items after filtering
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("")
		oItems := oG2antt:Items()
			h := oItems:AddItem("")
			oItems:SetProperty("CellValue",h,0,oItems:VisibleItemCount())
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1051
How can I change the filter caption
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 12801/*exFilterPromptWords+exFilterPromptContainsAll*/
		oG2antt:FilterBarPromptPattern := "london robert"
		oG2antt:FilterBarCaption := "<r>Found: ... "
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1050
While using the filter prompt is it is possible to use wild characters
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 16/*exFilterPromptPattern*/
		oG2antt:FilterBarPromptPattern := "lon* seat*"
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1049
How can I list all items that contains any of specified words, not necessary at the beggining
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 4610/*exFilterPromptStartWords+exFilterPromptContainsAny*/
		oG2antt:FilterBarPromptPattern := "london davolio"
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1048
How can I list all items that contains any of specified words, not strings
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 12802/*exFilterPromptWords+exFilterPromptContainsAny*/
		oG2antt:FilterBarPromptPattern := "london nancy"
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1047
How can I list all items that contains all specified words, not strings
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 12801/*exFilterPromptWords+exFilterPromptContainsAll*/
		oG2antt:FilterBarPromptPattern := "london robert"
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1046
I've noticed that the filtering by prompt is not case sensitive, is is possible to make it case sensitive
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 258/*exFilterPromptCaseSensitive+exFilterPromptContainsAny*/
		oG2antt:FilterBarPromptPattern := "Anne"
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1045
Is it possible to list only items that ends with any of specified strings
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 4/*exFilterPromptEndWith*/
		oG2antt:FilterBarPromptColumns := "0"
		oG2antt:FilterBarPromptPattern := "Fuller"
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1044
Is it possible to list only items that ends with any of specified strings
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 4/*exFilterPromptEndWith*/
		oG2antt:FilterBarPromptColumns := "0"
		oG2antt:FilterBarPromptPattern := "Fuller"
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1043
Is it possible to list only items that starts with any of specified strings
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 3/*exFilterPromptStartWith*/
		oG2antt:FilterBarPromptColumns := "0"
		oG2antt:FilterBarPromptPattern := "An M"
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1042
Is it possible to list only items that starts with specified string
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 3/*exFilterPromptStartWith*/
		oG2antt:FilterBarPromptColumns := "0"
		oG2antt:FilterBarPromptPattern := "A"
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1041
How can I specify that the list should include any of the seqeunces in the pattern
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 2/*exFilterPromptContainsAny*/
		oG2antt:FilterBarPromptPattern := "london seattle"
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1040
How can I specify that all sequences in the filter pattern must be included in the list
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 1/*exFilterPromptContainsAll*/
		oG2antt:FilterBarPromptPattern := "london manager"
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1039
How do I change at runtime the filter prompt
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptPattern := "london manager"
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1038
How do I specify to filter only a single column when using the filter prompt
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptColumns := "2,3"
		oG2antt:FilterBarPromptPattern := "london"
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1037
How do I change the prompt or the caption being displayed in the filter bar
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPrompt := "changed"
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1036
How do I enable the filter prompt feature

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oG2antt:ColumnAutoResize := .T.
		oG2antt:ContinueColumnScroll := .F.
		oG2antt:FocusColumnIndex := 1
		oG2antt:MarkSearchColumn := .F.
		oG2antt:SearchColumnIndex := 1
		oG2antt:FilterBarPromptVisible := -1/*0xffffc0e8+exFilterBarTop+exFilterBarShort+exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarToggle+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oColumns := oG2antt:Columns()
			oColumns:Add("Name"):Width := 96
			oColumns:Add("Title"):Width := 96
			oColumns:Add("City")
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Nancy Davolio")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Andrew Fuller")
			oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
			oItems:SetProperty("CellValue",h0,2,"Tacoma")
			oItems:SetProperty("SelectItem",h0,.T.)
			h0 := oItems:AddItem("Janet Leverling")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Kirkland")
			h0 := oItems:AddItem("Margaret Peacock")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"Redmond")
			h0 := oItems:AddItem("Steven Buchanan")
			oItems:SetProperty("CellValue",h0,1,"Sales Manager")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Michael Suyama")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Robert King")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
			h0 := oItems:AddItem("Laura Callahan")
			oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
			oItems:SetProperty("CellValue",h0,2,"Seattle")
			h0 := oItems:AddItem("Anne Dodsworth")
			oItems:SetProperty("CellValue",h0,1,"Sales Representative")
			oItems:SetProperty("CellValue",h0,2,"London")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1035
How can I unselect all bars
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:Columns():Add("Task")
		oG2antt:Chart():FirstVisibleDate := "01/01/2001"
		oItems := oG2antt:Items()
			oItems:AddBar(oItems:AddItem("Task 1"),"Task","01/02/2001","01/04/2001","K1")
			oItems:AddBar(oItems:AddItem("Task 2"),"Task","01/02/2001","01/04/2001","K2")
			oItems:AddBar(oItems:AddItem("Task 3"),"Task","01/02/2001","01/04/2001","K3")
			oItems:AddBar(oItems:AddItem("Task 4"),"Task","01/02/2001","01/04/2001","K4")
			oItems:SetProperty("ItemBar",0,"<*>",257/*exBarSelected*/,.T.)
			oItems:SetProperty("ItemBar",0,"<*>",257/*exBarSelected*/,.F.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1034
Can I select bars using a pattern using wild characters as *,

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,48)
			oChart:ShowNonworkingDates := .F.
		oItems := oG2antt:Items()
			h := oItems:AddItem("Task 1")
			oItems:AddBar(h,"Task","01/02/2001","01/04/2001","K1K","K1K")
			oItems:AddBar(h,"Task","01/05/2001","01/07/2001","K2M","K2M")
			oItems:AddBar(h,"Task","01/09/2001","01/11/2001","K3K","K3K")
			oItems:AddBar(oItems:AddItem("Task 2"),"Task","01/02/2001","01/04/2001","Q","Q")
			oItems:AddBar(oItems:AddItem("Task 4"),"Task","01/02/2001","01/04/2001","M","M")
			oItems:SetProperty("ItemBar",0,"<K*K>",257/*exBarSelected*/,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1033
How can I select all bars in the item with a specified key

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:Columns():Add("Task")
		oG2antt:Chart():FirstVisibleDate := "01/01/2001"
		oG2antt:Chart():SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h := oItems:AddItem("Task 1")
			oItems:AddBar(h,"Task","01/02/2001","01/04/2001","K1","K1")
			oItems:AddBar(h,"Task","01/05/2001","01/07/2001","K2","K2")
			oItems:AddBar(h,"Task","01/09/2001","01/11/2001","P","P")
			oItems:AddBar(oItems:AddItem("Task 2"),"Task","01/02/2001","01/04/2001","Q","Q")
			oItems:AddBar(oItems:AddItem("Task 4"),"Task","01/02/2001","01/04/2001","M","M")
			oItems:SetProperty("ItemBar",h,"<K*>",257/*exBarSelected*/,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1032
How can I select all bars in the specified item

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:Columns():Add("Task")
		oG2antt:Chart():FirstVisibleDate := "01/01/2001"
		oG2antt:Chart():SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h := oItems:AddItem("Task 1")
			oItems:AddBar(h,"Task","01/02/2001","01/04/2001","K1","K1")
			oItems:AddBar(h,"Task","01/05/2001","01/07/2001","K2","K2")
			oItems:AddBar(h,"Task","01/09/2001","01/11/2001","P","P")
			oItems:AddBar(oItems:AddItem("Task 2"),"Task","01/02/2001","01/04/2001","Q","Q")
			oItems:AddBar(oItems:AddItem("Task 4"),"Task","01/02/2001","01/04/2001","M","M")
			oItems:SetProperty("ItemBar",h,"<*>",257/*exBarSelected*/,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1031
How can I select all bars with a specified key

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:Columns():Add("Task")
		oG2antt:Chart():FirstVisibleDate := "01/01/2001"
		oG2antt:Chart():SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h := oItems:AddItem("Task 1")
			oItems:AddBar(h,"Task","01/02/2001","01/04/2001","K1","K1")
			oItems:AddBar(h,"Task","01/05/2001","01/07/2001","K2","K2")
			oItems:AddBar(h,"Task","01/08/2001","01/10/2001","P","P")
			oItems:AddBar(oItems:AddItem("Task 2"),"Task","01/02/2001","01/04/2001","Q","Q")
			oItems:AddBar(oItems:AddItem("Task 4"),"Task","01/02/2001","01/04/2001","P","P")
			oItems:SetProperty("ItemBar",0,"<P>",257/*exBarSelected*/,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1030
How can I select all bars

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:Columns():Add("Task")
		oG2antt:Chart():FirstVisibleDate := "01/01/2001"
		oG2antt:Chart():SetProperty("PaneWidth",.F.,48)
		oItems := oG2antt:Items()
			h := oItems:AddItem("Task 1")
			oItems:AddBar(h,"Task","01/02/2001","01/04/2001","K1","K1")
			oItems:AddBar(h,"Task","01/05/2001","01/07/2001","K2","K2")
			oItems:AddBar(h,"Task","01/08/2001","01/10/2001","P","P")
			oItems:AddBar(oItems:AddItem("Task 2"),"Task","01/02/2001","01/04/2001","Q","Q")
			oItems:AddBar(oItems:AddItem("Task 4"),"Task","01/02/2001","01/04/2001","M","M")
			oItems:SetProperty("ItemBar",0,"<*>",257/*exBarSelected*/,.T.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1029
I have the AllowInsideZoom property on True, but I am still not able to use the inside zoom feature

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oInsideZoomFormat
	LOCAL oLevel

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:LevelCount := 3
			oChart:FirstWeekDay := 1/*exMonday*/
			oChart:Level(0):Label := "Week: <%ww%>"
			oLevel := oChart:Level(1)
				oLevel:Label := "<%dddd%>"
				oLevel:Alignment := 1/*CenterAlignment*/
			oChart:Level(2):Label := 65536
			oChart:NonworkingHours := 16773375
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingDates := .F.
			oChart:ShowNonworkingHours := .F.
			oChart:AllowInsideZoom := .T.
			oInsideZoomFormat := oChart:DefaultInsideZoomFormat()
				oInsideZoomFormat:InsideUnit := 1048576/*exMinute*/
				oInsideZoomFormat:InsideLabel := "<b><%nn%></b>"
			oChart:InsideZooms():Add("01/01/2001 10:00:00")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1028
Is there any option to find out if two bars intersects

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:DefaultItemHeight := 22
		oG2antt:Columns():Add("InterectBars")
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,48)
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:Bars:Item("Task"):OverlaidType := 1/*exOverlaidBarsOffset*/
		oItems := oG2antt:Items()
			h := oItems:AddItem("")
			oItems:AddBar(h,"Task","01/02/2001","01/04/2001","A","A")
			oItems:AddBar(h,"Task","01/03/2001","01/05/2001","B","B")
			oItems:SetProperty("CellValue",h,0,oItems:IntersectBars(h,"A",h,"B"))
			h := oItems:AddItem("")
			oItems:AddBar(h,"Task","01/06/2001","01/09/2001","A","A")
			oItems:AddBar(h,"Task","01/10/2001","01/13/2001","B","B")
			oItems:SetProperty("CellValue",h,0,oItems:IntersectBars(h,"A",h,"B"))
			h := oItems:AddItem("")
			oItems:AddBar(h,"Task","01/06/2001","01/09/2001","B","B")
			oItems:AddBar(h,"Task","01/10/2001","01/13/2001","A","A")
			oItems:SetProperty("CellValue",h,0,oItems:IntersectBars(h,"A",h,"B"))
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1027
How can I find if a specified hour is a working or non-working hour, when using the ItemNonWorkingUnits

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h,w

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Hour"):FormatColumn := "hour(value)"
		oG2antt:Columns():Add("Type"):FormatColumn := "value != 0 ? 'non-working' : 'working'"
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,164)
			oChart:FirstWeekDay := 1/*exMonday*/
			oChart:LevelCount := 2
			oChart:UnitScale := 65536/*exHour*/
			oChart:NonworkingHours := 1
		oItems := oG2antt:Items()
			h := oItems:AddItem("01/01/2001")
			w := oG2antt:Chart():IsNonworkingDate(oG2antt:Items():CellValue(h,0))
			oItems:SetProperty("CellValue",h,1,w)
			h := oItems:AddItem("01/01/2001")
			oItems:SetProperty("ItemNonworkingUnits",h,.F.,"hour(value) >0 ")
			w := oG2antt:Chart():IsNonworkingDate(oG2antt:Items():CellValue(h,0),h)
			oItems:SetProperty("CellValue",h,1,w)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1026
How can I find if a specified hour is a working or non-working hour
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h,w

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Hour"):FormatColumn := "hour(value)"
		oG2antt:Columns():Add("Type"):FormatColumn := "value != 0 ? 'non-working' : 'working'"
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,164)
			oChart:FirstWeekDay := 1/*exMonday*/
			oChart:LevelCount := 2
			oChart:UnitScale := 65536/*exHour*/
			oChart:NonworkingHours := 1
		oItems := oG2antt:Items()
			h := oItems:AddItem("01/01/2001")
			w := oG2antt:Chart():IsNonworkingDate(oG2antt:Items():CellValue(h,0))
			oItems:SetProperty("CellValue",h,1,w)
			h := oItems:AddItem("01/01/2001 01:00:00")
			w := oG2antt:Chart():IsNonworkingDate(oG2antt:Items():CellValue(h,0))
			oItems:SetProperty("CellValue",h,1,w)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1025
How can I find if a specified date-time is a working or non-working unit, when using the ItemNonWorkingUnits
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h,w

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Date"):Width := 48
		oG2antt:Columns():Add("Type"):FormatColumn := "value != 0 ? 'non-working' : 'working'"
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,128)
			oChart:FirstWeekDay := 1/*exMonday*/
			oChart:LevelCount := 2
		oItems := oG2antt:Items()
			h := oItems:AddItem("01/01/2001")
			w := oG2antt:Chart():IsNonworkingDate(oG2antt:Items():CellValue(h,0))
			oItems:SetProperty("CellValue",h,1,w)
			h := oItems:AddItem("01/01/2001")
			oItems:SetProperty("ItemNonworkingUnits",h,.F.,"weekday(value) in (1)")
			w := oG2antt:Chart():IsNonworkingDate(oG2antt:Items():CellValue(h,0),h)
			oItems:SetProperty("CellValue",h,1,w)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1024
How can I find if a specified date-time is a working or non-working unit
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h,w

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Date"):Width := 48
		oG2antt:Columns():Add("Type"):FormatColumn := "value != 0 ? 'non-working' : 'working'"
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,128)
			oChart:FirstWeekDay := 1/*exMonday*/
			oChart:LevelCount := 2
		oItems := oG2antt:Items()
			h := oItems:AddItem("01/01/2001")
			w := oG2antt:Chart():IsNonworkingDate(oG2antt:Items():CellValue(h,0))
			oItems:SetProperty("CellValue",h,1,w)
			h := oItems:AddItem("01/06/2001")
			w := oG2antt:Chart():IsNonworkingDate(oG2antt:Items():CellValue(h,0))
			oItems:SetProperty("CellValue",h,1,w)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1023
When zooming to days, the non-working part of the chart occupies some not useful space. Can I reduce it

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL oLevel
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,48)
			oChart:FirstVisibleDate := "01/03/2002"
			oChart:Bars():Add("Task:Split"):Shortcut := "Task"
			oChart:LevelCount := 2
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:FirstWeekDay := 1/*exMonday*/
			oChart:Level(0):Label := "Week: <%ww%>"
			oLevel := oChart:Level(1)
				oLevel:Label := "<%d%>/<%m2%>"
				oLevel:FormatLabel := "weekday(dvalue) in (0,6) ? 'end' : value"
			oChart:UnitWidth := 32
			oChart:UnitWidthNonworking := -32
		oG2antt:Columns():Add("Task")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Default")
			oItems:AddBar(h,"Task","01/04/2002","01/08/2002","A")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1022
My chart display only working hours, but when zooming to days, each day shows the non-working part of the day too, even if I use the ShowNonWorkingUnits property on False. What am I doing wrong

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL oLevel
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,48)
			oChart:FirstVisibleDate := "01/03/2002 10:00:00"
			oChart:Bars():Add("Task:Split"):Shortcut := "Task"
			oChart:LevelCount := 2
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:FirstWeekDay := 1/*exMonday*/
			oChart:Level(0):Label := "<%ww%>"
			oLevel := oChart:Level(1)
				oLevel:Label := "<%dd%>"
				oLevel:Unit := 65536/*exHour*/
				oLevel:Count := 24
			oChart:NonworkingHours := 16761855
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingHours := .F.
			oChart:UnitWidth := 32
		oG2antt:Columns():Add("Task")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Default")
			oItems:AddBar(h,"Task","01/04/2002 10:00:00","01/08/2002 02:00:00","A")
			oItems:SetProperty("ItemBar",h,"A",20/*exBarKeepWorkingCount*/,.T.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1021
I need to display only working hours and weekend part, but for some items I need another non-working part. Is this possible

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL oLevel,oLevel1
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,48)
			oChart:FirstVisibleDate := "01/03/2002"
			oChart:Bars():Add("Task:Split"):Shortcut := "Task"
			oChart:LevelCount := 2
			oChart:DrawGridLines := -1/*exAllLines*/
			oLevel := oChart:Level(0)
				oLevel:Label := "<%ddd%>"
				oLevel:FormatLabel := "weekday(dvalue) in (0,6) ? '' : value"
			oLevel1 := oChart:Level(1)
				oLevel1:Label := 65536
				oLevel1:FormatLabel := "weekday(dvalue) in (0,6) ? 'end' : value"
			oChart:NonworkingHours := 16761855
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingHours := .F.
			oChart:UnitWidthNonworking := -24
		oG2antt:Columns():Add("Task")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Default")
			oItems:AddBar(h,"Task","01/04/2002","01/08/2002","A")
			oItems:SetProperty("ItemBar",h,"A",20/*exBarKeepWorkingCount*/,.T.)
			h := oItems:AddItem("Friday")
			oItems:AddBar(h,"Task","01/03/2002","01/07/2002 12:00:00","A")
			oItems:SetProperty("ItemBar",h,"A",20/*exBarKeepWorkingCount*/,.T.)
			oItems:SetProperty("ItemNonworkingUnits",h,.F.,"weekday(value) in (0,6,5) or hour(value)<10 or hour(value)>=14")
			h := oItems:AddItem("Till 13")
			oItems:AddBar(h,"Task","01/04/2002","01/07/2002 12:00:00","A")
			oItems:SetProperty("ItemBar",h,"A",20/*exBarKeepWorkingCount*/,.T.)
			oItems:SetProperty("ItemNonworkingUnits",h,.F.,"weekday(value) in (0,6) or hour(value)<10 or hour(value)>=13")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1020
I can display the working hours, but how can I hide the weekend or non-working part of the chart when using the ShowNonWorkingUnits property on False

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:FirstVisibleDate := "01/03/2002"
			oChart:LevelCount := 2
			oChart:Level(0):Label := "<%ddd%>"
			oChart:Level(1):Label := 65536
			oChart:NonworkingHours := 16761855
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingDates := .F.
			oChart:ShowNonworkingHours := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1019
How can I display only the working hours but uses less space for non-working part, such as weekend

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel,oLevel1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:FirstVisibleDate := "01/03/2002"
			oChart:LevelCount := 2
			oLevel := oChart:Level(0)
				oLevel:Label := "<%ddd%>"
				oLevel:FormatLabel := "weekday(dvalue) in (0,6) ? '' : value"
			oLevel1 := oChart:Level(1)
				oLevel1:Label := 65536
				oLevel1:FormatLabel := "weekday(dvalue) in (0,6) ? 'end' : value"
			oChart:NonworkingHours := 16761855
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingHours := .F.
			oChart:UnitWidthNonworking := -24

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1018
How can I display only the working hours but uses less space for non-working part, such as weekend

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:FirstVisibleDate := "01/03/2002"
			oChart:LevelCount := 2
			oChart:Level(0):Label := "<%ddd%>"
			oLevel := oChart:Level(1)
				oLevel:Label := 65536
				oLevel:FormatLabel := "weekday(dvalue) in (0,6) ? '' : value"
			oChart:NonworkingHours := 16761855
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingHours := .F.
			oChart:UnitWidthNonworking := 8

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1017
How can I display only the working hours

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:FirstVisibleDate := "01/03/2002"
			oChart:LevelCount := 2
			oChart:Level(0):Label := "<%ddd%>"
			oChart:Level(1):Label := 65536
			oChart:NonworkingHours := 16761855
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingHours := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1016
How can I specify non-working hours

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:FirstVisibleDate := "01/03/2002"
			oChart:LevelCount := 2
			oChart:Level(0):Label := "<%ddd%>"
			oChart:Level(1):Label := 65536
			oChart:NonworkingHours := 16761855

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1015
How can I display the working hours for a bar

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn
	LOCAL oColumns
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oColumns := oG2antt:Columns()
			oColumns:Add("Tasks")
			oColumn := oColumns:Add("Working")
				oColumn:SetProperty("Def",18/*exCellValueToItemBarProperty*/,258)
				oColumn:SetProperty("Def",19/*exCellValueToItemBarKey*/,"A")
				oColumn:FormatColumn := "(0:=round(value*24)) != 0 ? =:0 : ''"
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,96)
			oChart:Bars():Add("Task:Split"):Shortcut := "Task"
			oChart:FirstVisibleDate := "01/03/2002"
			oChart:LevelCount := 2
			oChart:Level(0):Label := "<%ddd%>"
			oChart:Level(1):Label := "<%hh%>"
			oChart:NonworkingHours := 16761855
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingHours := .F.
		oItems := oG2antt:Items()
			h := oItems:AddItem("Task 1")
			oItems:AddBar(h,"Task","01/04/2002","01/08/2002","A")
			oItems:SetProperty("ItemBar",h,"A",20/*exBarKeepWorkingCount*/,.T.)
			h := oItems:AddItem("Task 2")
			oItems:AddBar(h,"Task","01/03/2002","01/04/2002","A")
			oItems:SetProperty("ItemBar",h,"A",20/*exBarKeepWorkingCount*/,.T.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1014
Is it possible to show only working hours, showing a small part for the weekend days, and in the same time showing the bars by splitting the non-working part and keeping the working units for the bar while moving

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL oLevel,oLevel1
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:Bars():Add("Task:Split"):Shortcut := "Task"
			oChart:FirstVisibleDate := "01/03/2002"
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:GridLineStyle := 512/*exGridLinesGeometric*/
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:LevelCount := 2
			oLevel := oChart:Level(0)
				oLevel:Label := "<%ddd%>"
				oLevel:Alignment := 1/*CenterAlignment*/
				oLevel:FormatLabel := "weekday(dvalue) in (0,6) ? `` : value"
			oLevel1 := oChart:Level(1)
				oLevel1:Label := 65536
				oLevel1:DrawGridLines := .T.
				oLevel1:FormatLabel := "weekday(dvalue) in (0,6) ? `<font ;6>weekend</font>` : value"
			oChart:NonworkingHours := 16761855
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingDates := .T.
			oChart:ShowNonworkingHours := .F.
			oChart:UnitWidthNonworking := -40
		oG2antt:Columns():Add("Task")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Task 1")
			oItems:AddBar(h,"Task","01/04/2002","01/08/2002","A")
			oItems:SetProperty("ItemBar",h,"A",20/*exBarKeepWorkingCount*/,.T.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1013
How can I show bars with different solid color but black border

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:VisualAppearance():Add(1,"C:\Program Files\Exontrol\ExG2antt.NET\sample\EBN\blackbox.ebn")
		oG2antt:Columns():Add("Task")
		oG2antt:Chart():FirstVisibleDate := "01/01/2001"
		oBar := oG2antt:Chart():Bars:Item("Task")
			oBar:SetProperty("Color",0x1000000)
			oBar:Height := 15
		oG2antt:Chart():SetProperty("PaneWidth",.F.,0)
		oItems := oG2antt:Items()
			h := oItems:AddItem("Task")
			oItems:AddBar(h,"Task","01/02/2001","01/05/2001","")
			oItems:SetProperty("ItemBar",h,"",33/*exBarColor*/,65535)
			h := oItems:AddItem("Task")
			oItems:AddBar(h,"Task","01/02/2001","01/05/2001","")
			oItems:SetProperty("ItemBar",h,"",33/*exBarColor*/,255)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1012
I want to display a vertical line for each week, while I still need a vertical separator for each day. Is this possible

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel,oLevel1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:SetProperty("GridLineColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:NonworkingDays := 0
			oChart:LevelCount := 2
			oLevel := oChart:Level(0)
				oLevel:DrawGridLines := .T.
				oLevel:SetProperty("GridLineColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
			oLevel1 := oChart:Level(1)
				oLevel1:DrawGridLines := .T.
				oLevel1:SetProperty("GridLineColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1011
How can I display the levels as year, day, AM and PM for each day
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:FirstVisibleDate := "12/01/2009"
			oChart:UnitWidth := 22
			oChart:LevelCount := 3
			oChart:Level(0):Label := "<%yyyy%>"
			oChart:Level(1):Label := "<%mm%>/<%dd%>"
			oLevel := oChart:Level(2)
				oLevel:Label := "<%AM/PM%>"
				oLevel:Count := 12

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1010
How can I change the pattern for a specified time unit, in the chart area

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oInsideZoomFormat
	LOCAL oInsideZooms

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "01/01/2008"
			oChart:AllowInsideZoom := .T.
			oChart:AllowResizeInsideZoom := .F.
			oChart:InsideZoomOnDblClick := .F.
			oInsideZoomFormat := oChart:DefaultInsideZoomFormat()
				oInsideZoomFormat:PatternChart := 6/*exPatternBDiagonal*/
				oInsideZoomFormat:SetProperty("PatternColorChart",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oInsideZooms := oChart:InsideZooms()
				oInsideZooms:SplitBaseLevel := .F.
				oInsideZooms:DefaultWidth := 18
				oInsideZooms:Add("01/04/2008"):AllowInsideFormat := .F.
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1009
How can I hide the non-working hours, but still display the non-working days with even less space

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel,oLevel1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "11/19/2009"
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:GridLineStyle := 512/*exGridLinesGeometric*/
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:LevelCount := 2
			oLevel := oChart:Level(0)
				oLevel:Label := "<%dddd%>"
				oLevel:Alignment := 1/*CenterAlignment*/
				oLevel:FormatLabel := "weekday(dvalue) in (0,6) ? `` : value"
			oLevel1 := oChart:Level(1)
				oLevel1:Label := 65536
				oLevel1:DrawGridLines := .T.
				oLevel1:FormatLabel := "weekday(dvalue) in (0,6) ? `<font ;6>weekend</font>` : value"
			oChart:NonworkingHours := 16761855
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingDates := .T.
			oChart:ShowNonworkingHours := .F.
			oChart:UnitWidth := 32
			oChart:UnitWidthNonworking := -32
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1008
How can I hide the non-working hours, but still display the non-working days with less space

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel,oLevel1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "11/19/2009"
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:GridLineStyle := 512/*exGridLinesGeometric*/
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:LevelCount := 2
			oLevel := oChart:Level(0)
				oLevel:Label := "<%dddd%>"
				oLevel:Alignment := 1/*CenterAlignment*/
				oLevel:FormatLabel := "weekday(dvalue) in (0,6) ? `<font ;6>` + value + `</font>` : value"
			oLevel1 := oChart:Level(1)
				oLevel1:Label := 65536
				oLevel1:DrawGridLines := .T.
				oLevel1:FormatLabel := "weekday(dvalue) in (0,6) ? `<font ;6>` + value + `</font>` : value"
			oChart:NonworkingHours := 16761855
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingDates := .T.
			oChart:ShowNonworkingHours := .F.
			oChart:UnitWidth := 32
			oChart:UnitWidthNonworking := 12
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1007
How can I hide the non-working hours, but still display the non-working days

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel,oLevel1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "11/19/2009"
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:GridLineStyle := 512/*exGridLinesGeometric*/
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:LevelCount := 2
			oLevel := oChart:Level(0)
				oLevel:Label := "<%dddd%>"
				oLevel:Alignment := 1/*CenterAlignment*/
			oLevel1 := oChart:Level(1)
				oLevel1:Label := 65536
				oLevel1:DrawGridLines := .T.
			oChart:NonworkingHours := 16761855
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingDates := .T.
			oChart:ShowNonworkingHours := .F.
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1006
How can I hide the non-working hours, and the non-working days

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel,oLevel1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "11/19/2009"
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:GridLineStyle := 512/*exGridLinesGeometric*/
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:LevelCount := 2
			oLevel := oChart:Level(0)
				oLevel:Label := "<%dddd%>"
				oLevel:Alignment := 1/*CenterAlignment*/
			oLevel1 := oChart:Level(1)
				oLevel1:Label := 65536
				oLevel1:DrawGridLines := .T.
			oChart:NonworkingHours := 16761855
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingDates := .F.
			oChart:ShowNonworkingHours := .F.
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1005
Can I highlights the non-working hours while my chart shows days

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:UnitWidth := 48
			oChart:LevelCount := 2
			oLevel := oChart:Level(1)
				oLevel:Label := "<%d%>"
				oLevel:Unit := 65536/*exHour*/
				oLevel:Count := 24
			oChart:NonworkingHours := 127

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1004
How can I reduce the space/area being occupied by non-working units days or hours (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstWeekDay := 1/*exMonday*/
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,64)
			oChart:UnitWidthNonworking := -8
			oChart:Level(1):FormatLabel := "weekday(dvalue) in (0,6) ? '.' : value"
		oItems := oG2antt:Items()
			h := oItems:AddItem("Task 1")
			oItems:AddBar(h,"Task","01/02/2001","01/04/2001","K1")
			oItems:AddBar(h,"Task","01/05/2001","01/06/2001","K2")
			oItems:AddBar(oItems:AddItem("Task 2"),"Task","01/02/2001","01/04/2001","K3")
			oItems:AddBar(oItems:AddItem("Task 4"),"Task","01/02/2001","01/04/2001","K4")
			oItems:SetProperty("ItemBar",h,"<*>",33/*exBarColor*/,255)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1003
How can I reduce the space/area being occupied by non-working units days or hours (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstWeekDay := 1/*exMonday*/
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,64)
			oChart:UnitWidthNonworking := 4
			oChart:Level(1):FormatLabel := "weekday(dvalue) in (0,6) ? '' : value"
		oItems := oG2antt:Items()
			h := oItems:AddItem("Task 1")
			oItems:AddBar(h,"Task","01/02/2001","01/04/2001","K1")
			oItems:AddBar(h,"Task","01/05/2001","01/06/2001","K2")
			oItems:AddBar(oItems:AddItem("Task 2"),"Task","01/02/2001","01/04/2001","K3")
			oItems:AddBar(oItems:AddItem("Task 4"),"Task","01/02/2001","01/04/2001","K4")
			oItems:SetProperty("ItemBar",h,"<*>",33/*exBarColor*/,255)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1002
How can I hide the non-working units

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:FirstWeekDay := 1/*exMonday*/
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,64)
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingDates := .F.
			oChart:DrawGridLines := 2/*exVLines*/
			oChart:Level(0):DrawGridLines := .T.
			oChart:GridLineStyle := 512/*exGridLinesGeometric*/
		oItems := oG2antt:Items()
			h := oItems:AddItem("Task 1")
			oItems:AddBar(h,"Task","01/02/2001","01/04/2001","K1")
			oItems:AddBar(h,"Task","01/05/2001","01/06/2001","K2")
			oItems:AddBar(oItems:AddItem("Task 2"),"Task","01/02/2001","01/04/2001","K3")
			oItems:AddBar(oItems:AddItem("Task 4"),"Task","01/02/2001","01/04/2001","K4")
			oItems:SetProperty("ItemBar",h,"<*>",33/*exBarColor*/,255)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1001
How can I determine that a certain bar is the topmost (zorder)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,48)
			oChart:FirstVisibleDate := "12/27/2000"
			oChart:Bars:Item("Task"):Pattern := 1/*exPatternSolid*/
		oItems := oG2antt:Items()
			h := oItems:AddItem("B in front")
			oItems:AddBar(h,"Task","01/02/2001","01/06/2001","A")
			oItems:AddBar(h,"Task","01/03/2001","01/05/2001","B","<fgcolor=FF0000>B</fgcolor>")
			oItems:SetProperty("ItemBar",h,"B",18/*exBarOffset*/,-2)
			oItems:SetProperty("ItemBar",h,"B",4/*exBarHAlignCaption*/,18)
			oItems:SetProperty("ItemBar",h,"B",33/*exBarColor*/,255)
			h := oItems:AddItem("A in back")
			oItems:AddBar(h,"Task","01/02/2001","01/06/2001","A","<fgcolor=FF0000>A</fgcolor>")
			oItems:SetProperty("ItemBar",h,"A",18/*exBarOffset*/,-2)
			oItems:SetProperty("ItemBar",h,"A",4/*exBarHAlignCaption*/,18)
			oItems:SetProperty("ItemBar",h,"A",33/*exBarColor*/,255)
			oItems:AddBar(h,"Task","01/03/2001","01/05/2001","B")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN